package cn.wen.yinxiu.works.service;

import cn.wen.yinxiu.works.vo.AddCommentVO;
import cn.wen.yinxiu.works.vo.CommentVO;
import com.baomidou.mybatisplus.extension.service.IService;
import cn.wen.yinxiu.common.toolkit.PageUtils;
import cn.wen.yinxiu.works.entity.CommentEntity;

import java.util.List;
import java.util.Map;

/**
 *
 * @ClassName: CommentService
 * @Author 小飞
 * @Email coderwen22@163.com
 * @Date 2023-05-22 09:39:56
 * @Description: 作品的评论数据的Service类
 */
public interface CommentService extends IService<CommentEntity> {


    PageUtils queryPage(Map<String, Object> params);

    /**
     * 通过作品Id获取评论数量
     *
     * @param worksId
     * @return
     */
    Long getCommentNumByWorksId(Long worksId);

    /**
     * 评论总数
     *
     * @return
     */
    Long getCommentTotalNum();

    /**
     * 通过作品ID来获取全部的评论列表
     *
     * @param worksId
     * @param page
     * @param userId
     * @return
     */
    List<CommentVO> listCommentByWorksId(Long worksId, Integer page, Long userId);

    /**
     * 发表评论 / 回复评论
     *
     * @param addCommentVO
     * @return
     */
    boolean insertComment(AddCommentVO addCommentVO);

    /**
     * 删除评论信息
     *
     *
     * @param commendId
     * @param worksId
     * @return
     */
    boolean deleteCommentById(Long commendId, Long worksId);

    /**
     * 通过状态获取评论数量
     *
     * @param status
     * @return
     */
    Long getCommentCountByStatus(int status);

    /**
     * 评论点赞
     *
     * @param commendId
     * @param worksId
     * @param userId
     * @return
     */
    boolean commentLikeById(Long commendId, Long worksId, Long userId);

    /**
     * 取消评论点赞
     *
     * @param commendId
     * @param worksId
     * @param userId
     * @return
     */
    boolean commentUnlikeById(Long commendId, Long worksId, Long userId);
}

